﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using EntityLayer;

namespace DataLayer.DAO
{
    public class clsLegajoDAO
    {
        private BD_LEGAJOEntities ContextoDeObjs = new BD_LEGAJOEntities();
        public bool Insertar(SGP_LEGAJO Obj)
        {
            try
            {
                ContextoDeObjs.AddObject("SGP_LEGAJO", Obj);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
                throw;
            }
        }
        public bool Modificar(SGP_LEGAJO obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("SGP_LEGAJO", obj);
                ContextoDeObjs.ObjectStateManager.ChangeObjectState(obj, System.Data.EntityState.Modified);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;

            }
        }
        public bool Eliminar(SGP_LEGAJO obj)
        {
            try
            {
                ContextoDeObjs.AttachTo("SGP_LEGAJO", obj);
                ContextoDeObjs.DeleteObject(obj);
                ContextoDeObjs.SaveChanges();
                return true;
            }
            catch (Exception)
            {
                return false;
            }
        }
        public List<SGP_LEGAJO> listar()
        {
            List<SGP_LEGAJO> lista = new List<SGP_LEGAJO>();
            var q = from c in ContextoDeObjs.SGP_LEGAJO
                    select c;
            lista = q.ToList();
            return lista;
        }
        public List<SGP_LEGAJO> Mostrar(string ID)
        {
            List<SGP_LEGAJO> lista = new List<SGP_LEGAJO>();
            var q = from c in ContextoDeObjs.SGP_LEGAJO
                    where c.CLEG_LEGAJO == ID
                    select c;
            lista = q.ToList();
            return lista;
        }
        public IEnumerable<Object> listarLegajos()
        {
            IEnumerable<Object> lista = new List<Object>();
            try
            {
                var q = from l in ContextoDeObjs.SGP_LEGAJO
                        join d in ContextoDeObjs.SGP_DISJUD
                        on l.CDIS_DISJUD equals d.CDIS_CODDIS
                        join tp in ContextoDeObjs.SGP_TIPOPROCESO
                        on l.CTAB_TIPPRO equals tp.CTAB_TIPPRO
                        join e in ContextoDeObjs.SGP_ESTADO
                        on l.CTAB_ESTLEG equals e.CTAB_ESTLEG
                        join p in ContextoDeObjs.SGP_PERSONA
                        on l.NPER_SECPER equals p.NPER_SECPER
                        orderby l.CLEG_LEGAJO
                        select new
                        {
                            l.CLEG_LEGAJO,
                            tp.CTAB_NOMTIPPRO,
                            l.DLEG_FECREC,
                            l.CLEG_TITULO,
                            l.CLEG_OBSLEG,
                            l.CTAB_ESTLEG,
                            e.CTAB_DESCRIP,
                            p.CPER_NOMBRE,
                            p.NPER_SECPER
                        };
                lista = q.ToList();
            }
            catch (Exception)
            {
                lista = null;
                throw;
            }
            return lista;
        }
        public IEnumerable<Object> listarLegajosNoAnulados()
        {
            IEnumerable<Object> lista = new List<Object>();
            try
            {
                var q = from l in ContextoDeObjs.SGP_LEGAJO
                        join d in ContextoDeObjs.SGP_DISJUD
                        on l.CDIS_DISJUD equals d.CDIS_CODDIS
                        join tp in ContextoDeObjs.SGP_TIPOPROCESO
                        on l.CTAB_TIPPRO equals tp.CTAB_TIPPRO
                        join e in ContextoDeObjs.SGP_ESTADO
                        on l.CTAB_ESTLEG equals e.CTAB_ESTLEG
                        join p in ContextoDeObjs.SGP_PERSONA
                        on l.NPER_SECPER equals p.NPER_SECPER
                        where l.CTAB_ESTLEG != "0022"
                        orderby l.CLEG_LEGAJO
                        select new
                        {
                            l.CLEG_LEGAJO,
                            tp.CTAB_NOMTIPPRO,
                            l.DLEG_FECREC,
                            l.CLEG_TITULO,
                            l.CLEG_OBSLEG,
                            l.CTAB_ESTLEG,
                            e.CTAB_DESCRIP,
                            p.CPER_NOMBRE,
                            p.NPER_SECPER
                        };
                lista = q.ToList();
            }
            catch (Exception)
            {
                lista = null;
                throw;
            }
            return lista;
        }
    }
}
